import Axios from "axios";
import { prefix } from "../config/config";
// 请求白名单
const noTokenUrl = ["/login.php"];

/**
 *
 * @param {*} config 你想要发起的请求的相关配置
 */
function request(config) {
  // 用一层  异步函数包着
  return new Promise((resolve, reject) => {
    //hack
    config["headers"] = {};
    //  对config.url进行白名单处理
    if (noTokenUrl.includes(config.url)) {
      // 如果在白名单内
      // 就不用考虑加token
    } else {
      // 加token
      config["headers"]["token"] = localStorage.getItem("token") || "";
    }
    // 首先，每个请求地址拼接上域名
    if (config.url) {
      // config.url  => /login
      // 记住，这里你的项目域名就不用在写了
      config.url = prefix + config.url;
    }
    Axios.request(config)
      .then((response) => {
        // 拿到后端接口的返回结果
        resolve(response.data);
      })
      .catch((err) => {
        reject(err);
      });
  });
}

export default request;
